/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Interface;

import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.Toolkit;

/**
 * Projectiles lancés par le canon, au clic gauche de la souris. 
 * Détruisent les ennemis et les power-ups lorsqu'ils les frappent.
 * @author Laurent/Pascal
 */
public class Projectile extends ElementDuJeu {

    double vitesseX, vitesseY;
    boolean estUnProjectileDeTourelle = false;
    public ElementDuJeu laCible = null;
    Image image;
    int rotation = 0;

    /**
     * Constructeur du projectile.
     * @param x Position en x du bout du canon, où le projectile est créé.
     * @param y Position en y du bout du canon, où le projectile est créé.
     * @param vitesseX Vitesse en x du projectile, déterminée par l'angle du canon.
     * @param vitesseY Vitesse en y du projectile, déterminée par l'angle du canon.
     * @param prototype True si le mode prototype est activé.
     */
    public Projectile(int x, int y, double vitesseX, double vitesseY, boolean prototype) {

        this.vitesseX = vitesseX;
        this.vitesseY = vitesseY;
        image = Toolkit.getDefaultToolkit().getImage(ClassLoader.getSystemResource("Fichier/Asteriskf.png"));

        this.prototype = prototype;

        setLocation(x, y);
        setSize(20, 20);

    }

    /**
     * Dessine le projectile. Disque orange (prototype) ou astérisque blanc.
     * @param g Permet de dessiner.
     */
    @Override
    public void paintComponent(Graphics g) {

        Graphics2D g2d = (Graphics2D) g;

        if (prototype) {
            g.setColor(Color.ORANGE);
            g.fillOval(0, 0, 20, 20);
        } else {
            g2d.rotate(rotation, getWidth() / 2, getHeight() / 2);
            g.drawImage(image, 0, 0, getWidth(), getHeight(), this);
        }



    }

    /**
     * Déplacement du projectile selon sa vitesse en x et en y.
     * Rotation de 90 degrés.
     */
    @Override
    public void bouger(double newX, double newY) {
        rotation += 6.20;
        setLocation(getX() + (int) vitesseX, getY() - (int) vitesseY);
        repaint();
    }

    /**
     * Simulation de gravité: diminution graduelle de la vitesse en y du projectile.
     * @param vitesse Facteur de diminution de la vitesse.
     */
    public void vitesse(int vitesse) {
        vitesseY = vitesseY - vitesse;
    }
}
